package com.csthink.auditlog.service;

import com.csthink.auditlog.domain.AuditLog;
import com.csthink.auditlog.domain.ScrollAuditLogs;
import com.csthink.auditlog.dto.AuditLogQueryParamDTO;
import com.csthink.auditlog.dto.PageResultDTO;

import java.io.IOException;

/**
 * @author <a href="mailto:security.2009@live.cn">Mars</a>
 * @since 2023-09-12
 */
public interface AuditLogService {

    AuditLog save(AuditLog auditLog) throws IOException;

    void asyncSave(AuditLog auditLog);

    AuditLog findById(String id) throws IOException;

    PageResultDTO<AuditLog> query(AuditLogQueryParamDTO queryParam) throws IOException;

    ScrollAuditLogs scrollAuditLog(AuditLogQueryParamDTO queryParam) throws IOException;

//    String auditLogCsvExport(AuditLogQueryParam queryParam, User loginUser);

    int getAuditLogCount(AuditLogQueryParamDTO queryParam);
}
